<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>    
</body>
<script>
    // Object.freeze方法可以冻结一个对象 冻结指的是不能向这个对象添加
    // 新的属性，不能修改其已有属性的值 不能删除已有属性
    // 以及不能修改该对象已有属性的可枚举性、可配置性、可写性
    // 这个对象永远不可变
    // 浅冻结
    function myFreeze(obj){
        // 判断参数是否为Object类型
        if(obj instanceof Object){
            //in运算符会忽略从原型链上继承到的属性
          for(let key in obj){
              // Object.prototype.hasOwnProperty用来检测一个对象是否含有特定的自身属性
              if(obj.hasOwnProperty(key)){
                  // Object.defineProperty(obj,"prop",{
                    //  configurable:false,
                    //  enumerable:false, 
                    //  writable:false, 表示是否可以修改该属性的值
                    //  value:"" 该属性对应的值
                  //})
                 Object.defineProperty(obj,key,{
                     writable:false,//设置只读
                 })
                 Object.seal(obj);//封闭对象
              }
          }
        }
        return obj;
    }
    //Object.getOwnPropertyDescriptor 返回指定对象上一个自有属性对应的属性描述符
    const object1= {
        property: {
            a:100,
        }
    }
    const descriptor1 = Object.getOwnPropertyDescriptor(object1,'property');

    console.log(descriptor1.configurable)
</script>
</html>